package org.posta.mail.store;

import java.util.List;

import org.posta.data.DataStore;
import org.posta.data.user.User;

import com.db4o.ObjectContainer;
import com.db4o.query.Predicate;
import com.google.inject.Inject;

public class MailStore
{
    private final DataStore store;
    
    @Inject
    public MailStore(DataStore dataStore)
    {
        this.store = dataStore;
        ObjectContainer store = dataStore.getDb();
        
        List<MailMessage> messages = store.get(MailMessage.class);
        for (MailMessage msg : messages)
        {
            System.out.println(msg);
        }
    }
    
    public List<MailMessage> getMessages(final User user)
    {
        ObjectContainer db = store.getDb();
        
        return db.query(new Predicate<MailMessage>() {
            public boolean match(MailMessage msg)
            {
                return msg.getUser().equals(user);
            }
        });
    }
    
    public void add(MailMessage message)
    {
        ObjectContainer db = store.getDb();
        db.set(message);
        db.commit();
    }
    
}
